<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="utf-8" lang="utf-8">
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>
   Zip 编码类 - CodeIgniter 中文手册|用户手册|用户指南|Wiki文档
  </title>
  <link rel="shortcut icon" href="/user_guide/../images/design/favicon.ico" type="image/x-icon" />
  <link rel="stylesheet" type="text/css" media="all" href="/user_guide/userguide.css" />
  <link rel="search" href="/user_guide/../CodeIgniterSearch.xml" type="application/opensearchdescription+xml" title="CodeIgniter 搜索" />
  <link rel="canonical" href="/user_guide/libraries/zip.html" />
  <script type="text/javascript" src="/user_guide/nav/nav.js">
  </script>
  <script type="text/javascript" src="/user_guide/nav/prototype.lite.js">
  </script>
  <script type="text/javascript" src="/user_guide/nav/moo.fx.js">
  </script>
  <script type="text/javascript" src="/user_guide/nav/user_guide_menu.js">
  </script>
  <meta name="robots" content="all" />
  <meta name="author" content="ExpressionEngine Dev Team" />
  <meta name="description" content="CodeIgniter 中文手册, CodeIgniter 用户指南, CodeIgniter User Guide, Wiki 文档" />
 </head>
 <body>
  <!-- START NAVIGATION -->
  <div id="nav">
   <div id="nav_inner">
    <script type="text/javascript">
     create_menu('/user_guide/');
    </script>
   </div>
  </div>
  <script type="text/javascript">
   _setNavigation();
  </script>
  <div id="nav2">
   <a name="top">
   </a>
   <a href="javascript:void(0);" onclick="myHeight.toggle();">
    <img src="/user_guide/images/nav_toggle_darker.jpg" width="154" height="43" border="0" title="切换目录" alt="切换目录" />
   </a>
  </div>
  <div id="masthead">
   <table cellpadding="0" cellspacing="0" border="0" style="width:100%">
    <tr>
     <td width="350">
      <h1>
       CodeIgniter 用户指南 版本 2.0.0
      </h1>
     </td>
     
     <td id="breadcrumb_right">
      <a href="/user_guide/toc.html">
       目录页
      </a>
     </td>
    </tr>
   </table>
  </div>
  <!-- END NAVIGATION -->
  <!-- START BREADCRUMB -->
  <table cellpadding="0" cellspacing="0" border="0" style="width:100%">
   <tr>
    <td id="breadcrumb">
     <a href="/" target="_blank">
      CodeIgniter 中国首页
     </a>
     &nbsp;&#8250;&nbsp;
     <a href="/user_guide/toc.html">用户指南目录</a>
     &nbsp;&#8250;&nbsp;Zip 编码类
    </td>
    <td id="searchbox">
     <form method="get" action="http://www.google.com/search" target="google_window">
      <input type="hidden" name="client" value="pub-0176846097796333" />
      <input type="hidden" name="forid" value="1" />
      <input type="hidden" name="ie" value="UTF-8" />
      <input type="hidden" name="oe" value="UTF-8" />
      <input type="hidden" name="as_sitesearch" id="as_sitesearch" value="codeigniter.org.cn/user_guide/" />
      搜索用户指南&nbsp;
      <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />
      &nbsp;
      <input type="submit" class="submit" name="sa" value="Go" />
     </form>
    </td>
   </tr>
  </table>
  <!-- END BREADCRUMB -->
  <div style="clear:both;text-align:right;padding: 6px 40px 0 0;">
   <a href="http://codeigniter.com/user_guide/libraries/zip.html" target="_blank">
    查看原文
   </a>
  </div>
  <!--<br clear="all"  />-->
  <!-- START CONTENT -->
  <div id="content">
   <h1>
    Zip 编码类
   </h1>
   <p>
    CodeIgniter的zip编码类允许你创建ZIP压缩文档。文档可以保存在你的桌面或者某个文件夹里
   </p>
   <h2>
    初始化
   </h2>
   <p>
    与其他CodeIgniter里的类一样，ZIP类在控制器里完成初始化工作，函数：
    <dfn>
     $this-&gt;load-&gt;library
    </dfn>
   </p>
   <code>
    $this-&gt;load-&gt;library('zip');
   </code>
   <p>
    一旦加载，ZIP库对象可以用
    <dfn>
     $this-&gt;zip
    </dfn>
    来使用
   </p>
   <h2>
    使用样例
   </h2>
   <p>
    这个例子演示了如何压缩一个文件并保存到你服务器一个文件夹，然后下载到你的桌面上。
   </p>
   <code>
    $name = 'mydata1.txt';
    <br />
    $data = 'A Data String!';
    <br />
    <br />
    $this-&gt;zip-&gt;add_data($name, $data);
    <br />
    <br />
    // 在你的服务器的文件夹里写.zip文件。命名为"my_backup.zip"
    <br />
    $this-&gt;zip-&gt;archive('/path/to/directory/my_backup.zip');
    <br />
    <br />
    // 下载此文件到桌面，命名为"my_backup.zip"
    <br />
    $this-&gt;zip-&gt;download('my_backup.zip');
   </code>
   <h1>
    函数参考
   </h1>
   <h2>
    $this-&gt;zip-&gt;add_data()
   </h2>
   <p>
    添加数据进zip文件里. 第一个参数是文件名, 第二个参数是你要添加的数据的字符串格式:
   </p>
   <code>
    $name = 'my_bio.txt';
    <br />
    $data = 'I was born in an elevator...';
    <br />
    <br />
    $this-&gt;zip-&gt;add_data($name, $data);
   </code>
   <p>
    允许你多次调用这个函数按顺序的添加若干个文件到你的存档。例子：
   </p>
   <code>
    $name = 'mydata1.txt';
    <br />
    $data = 'A Data String!';
    <br />
    $this-&gt;zip-&gt;add_data($name, $data);
    <br />
    <br />
    $name = 'mydata2.txt';
    <br />
    $data = 'Another Data String!';
    <br />
    $this-&gt;zip-&gt;add_data($name, $data);
    <br />
   </code>
   <p>
    或者你可以使用一个数组来传递多个文件（的值）：
   </p>
   <code>
    $data = array(
    <br />
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'mydata1.txt' => 'A Data String!',
    <br />
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'mydata2.txt' => 'Another Data String!'
    <br />
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);
    <br />
    <br />
    $this-&gt;zip-&gt;add_data($data);
    <br />
    <br />
    $this-&gt;zip-&gt;download('my_backup.zip');
   </code>
   <p>
    如果你希望将压缩后的数据放入子文件夹内，请把路径作为文件名的一部分包含进去:
   </p>
   <code>
    $name = '
    <kbd>
     personal/
    </kbd>
    my_bio.txt';
    <br />
    $data = 'I was born in an elevator...';
    <br />
    <br />
    $this-&gt;zip-&gt;add_data($name, $data);
   </code>
   <p>
    上面的例子将放置
    <dfn>
     my_bio.txt
    </dfn>
    到一个叫
    <kbd>
     personal
    </kbd>
    的文件夹内。
   </p>
   <h2>
    $this-&gt;zip-&gt;add_dir()
   </h2>
   <p>
    允许你添加一个目录。通常这个函数是不必要的，因为当你使用
    <dfn>
     $this-&gt;zip-&gt;add_data()
    </dfn>
    , 可以把你的数据放进目录里，但是如果你想要创建一个空目录的话你也可以这样做。例子：
   </p>
   <code>
    $this-&gt;zip-&gt;add_dir('myfolder'); // Creates a folder called "myfolder"
   </code>
   <h2>
    $this-&gt;zip-&gt;read_file&#40;&#41;
   </h2>
   <p>
    允许你压缩一个服务器某处存在的文件。提供一个文件路径，zip类将读取它并添加到存档：
   </p>
   <code>
    $path = '/path/to/photo.jpg';
    <br />
    <br />
    $this-&gt;zip-&gt;read_file&#40;$path&#41;;
    <br />
    <br />
    // Download the file to your desktop.  Name it "my_backup.zip"
    <br />
    $this-&gt;zip-&gt;download('my_backup.zip');
   </code>
   <p>
    如果你想压缩文档保持原来文件的目录结构，可以把第二个参数设置为
    <kbd>
     TRUE
    </kbd>
    （布尔值）。例子：
   </p>
   <code>
    $path = '/path/to/photo.jpg';
    <br />
    <br />
    $this-&gt;zip-&gt;read_file&#40;$path,
    <kbd>
     TRUE
    </kbd>
    &#41;;
    <br />
    <br />
    // Download the file to your desktop.  Name it "my_backup.zip"
    <br />
    $this-&gt;zip-&gt;download('my_backup.zip');
   </code>
   <p>
    在上边的例子中，
    <dfn>
     photo.jpg
    </dfn>
    将被放到两层文件夹中：
    <kbd>
     path/to/
    </kbd>
   </p>
   <h2>
    $this-&gt;zip-&gt;read_dir()
   </h2>
   <p>
    允许你压缩一个服务器某处存在的文件夹（以及它里面的文件和子文件夹）。提供一个文件夹路径，zip类将递归读取它并重新创建添加到存档。 你所提供的路径下面的所有文件都会被压缩进来，也包括所有子文件夹。例如:
   </p>
   <code>
    $path = '/path/to/your/directory/';
    <br />
    <br />
    $this-&gt;zip-&gt;read_dir($path);
    <br />
    <br />
    // 将文件下载到你的桌面上，命名为 "my_backup.zip"
    <br />
    $this-&gt;zip-&gt;download('my_backup.zip');
   </code>
   <p>
    By default the Zip archive will place all directories listed in the first parameter inside the zip. If you want the tree preceding the target folder to be ignored
you can pass
    <kbd>
     FALSE
    </kbd>
    (boolean) in the second parameter.  Example:
   </p>
   <code>
    $path = '/path/to/your/directory/';
    <br />
    <br />
    $this-&gt;zip-&gt;read_dir($path, FALSE);
   </code>
   <p>
    This will create a ZIP with the folder "directory" inside, then all sub-folders stored correctly inside that, but will not include the folders
    <samp>
     /path/to/your
    </samp>
    .
   </p>
   <h2>
    $this-&gt;zip-&gt;archive()
   </h2>
   <p>
    将Zip压缩文件写入服务器的一个目录下。请提交一个有效的服务器路径，以文件名作为结尾，并确保那个目录是可写的(权限为666或者777都可以)。例如:
   </p>
   <code>
    $this-&gt;zip-&gt;archive('/path/to/folder/myarchive.zip'); // 创建一个名为 myarchive.zip 的文件
   </code>
   <h2>
    $this-&gt;zip-&gt;download()
   </h2>
   <p>
    本函数将使用户从你的服务器上下载一个Zip文件。你必须把你想要使用的文件名作为参数传递给函数。例如:
   </p>
   <code>
    $this-&gt;zip-&gt;download('latest_stuff.zip'); // 文件将被命名为"latest_stuff.zip"
   </code>
   <p class="important">
    <strong>
     说明:
    </strong>
    &nbsp; 在调用本函数的控制器中不要显示任何数据，因为本函数将发送多个服务器header，从而使文件以二进制的形式被下载。
   </p>
   <h2>
    $this-&gt;zip-&gt;get_zip()
   </h2>
   <p>
    返回经过Zip压缩后的文件数据。通常情况下你不需要用到本函数，除非你想对数据做特殊处理。例如:
   </p>
   <code>
    $name = 'my_bio.txt';
    <br />
    $data = 'I was born in an elevator...';
    <br />
    <br />
    $this-&gt;zip-&gt;add_data($name, $data);
    <br />
    <br />
    $zip_file = $this-&gt;zip-&gt;get_zip();
   </code>
   <h2>
    $this-&gt;zip-&gt;clear_data()
   </h2>
   <p>
    Zip编码类会对你的zip数据进行缓存，因此，调用上面的各个函数时，你不需要每次都重新建立Zip文件。然而，如果你要创建多个有着各自不同数据的Zip文件的话，你可以在调用期间清理掉缓存。例如:
   </p>
   <code>
    $name = 'my_bio.txt';
    <br />
    $data = 'I was born in an elevator...';
    <br />
    <br />
    $this-&gt;zip-&gt;add_data($name, $data);
    <br />
    $zip_file = $this-&gt;zip-&gt;get_zip();
    <br />
    <br />
    <kbd>
     $this-&gt;zip-&gt;clear_data();
    </kbd>
    <br />
    <br />
    $name = 'photo.jpg';
    <br />
    $this-&gt;zip-&gt;read_file&#40;"/path/to/photo.jpg"&#41;; // 读取文件内容
    <br />
    <br />
    <br />
    $this-&gt;zip-&gt;download('myphotos.zip');
   </code>
   <p>
    &nbsp;
   </p>
   <div id="Contributors">
    翻译贡献者:
architectcom, Hex, lomatus, skey, yinzhili, yygcom
   </div>
   <div id="DocDate">
    最后修改: 2011-02-01 02:17:11
   </div>
  </div>
  <!-- END CONTENT -->
  <div id="footer">
   <p>
    上一个主题:&nbsp;&nbsp;
    <a href="/user_guide/libraries/xmlrpc.html">
     XML-RPC 类
    </a>
    &nbsp;&nbsp;&middot;&nbsp;&nbsp;
    <a href="#top">
     页首
    </a>
    &nbsp;&middot;&nbsp;&nbsp;
    <a href="/user_guide/toc.html">用户指南目录</a>
    &nbsp;&nbsp;&middot;&nbsp;&nbsp;下一个主题:&nbsp;&nbsp;
    <a href="/user_guide/helpers/array_helper.html">
     数组辅助函数
    </a>
   </p>
   <p>
    <a href="http://codeigniter.com">
     CodeIgniter
    </a>
    &nbsp;&middot;&nbsp; 版权所有 &#169; 2006-2011 &nbsp;&middot;&nbsp;
    <a href="http://ellislab.com/">
     Ellislab, Inc.
    </a>
   </p>
   <p>
    中文化:
    <a href="">
     CodeIgniter 中国
    </a>
    &nbsp;&middot;&nbsp; 制作: Hex &nbsp;&middot;&nbsp; 版本: 1.20 &nbsp;&middot;&nbsp; 鸣谢: 子非鱼
   </p>
  </div>
  
  <div style="display:none">
   
   <noscript>
    <a href="http://www.51.la/?3289908" target="_blank">
     <img alt="我要啦免费统计" src="http://img.users.51.la/3289908.asp" style="border:none" />
    </a>
   </noscript>
  </div>
 </body>
</html>